package com.smartsoft.storage.interceptor;

import java.util.Map;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;

/**
 * filter与拦截器（interceptor）的区别：
 * 二者不论从结构还是功能都非常相似，但是二者是有区别的,：
 * ① filter是基于servlet容器的，而interceptor仅限于struts2，因此filter的作用域要远大于interceptor。
 * ② filter中doFilter方法是基于回调函数，而interceptor中intercept方法则是基于java反射。
 * ③ filter的功能要远大于interceptor，filter除了过滤请求外通过通配符可以保护页面，图片，文件，还可以进行加密、安全过滤、权限管理等等，而Interceptor基本只能过滤请求。
 * ④ filter拦截请求的粒度较粗，interceptor拦截请求的粒度较细
 * 
 * @author yfgg-04
 *
 */
public class MyInterceptor implements Interceptor {

    @Override
    public void destroy() {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void init() {
        // TODO Auto-generated method stub
        
    }

    @Override
    public String intercept(ActionInvocation invocation) throws Exception {
        Map<String, Object> sessionMap = invocation.getInvocationContext().getSession();  
        String username = (String)sessionMap.get("username");  
          
        if (username != null) {  
            return invocation.invoke();  
        }  
        return "error"; 
    }

}
